public class DCLSingleton {
    // 1. 私有静态实例（volatile 保证可见性和禁止指令重排序）
    private static volatile DCLSingleton instance;

    // 2. 私有构造函数，防止外部实例化
    private DCLSingleton() {
        // 防止通过反射破坏单例
        if (instance != null) {
            throw new RuntimeException("禁止通过反射创建实例！");
        }
    }

    // 3. 全局访问方法（双重检查锁定）
    public static DCLSingleton getInstance() {
        if (instance == null) { // 第一次检查（避免不必要的同步）
            synchronized (DCLSingleton.class) {
                if (instance == null) { // 第二次检查（确保线程安全）
                    instance = new DCLSingleton();
                }
            }
        }
        return instance;
    }

    // 示例方法
    public void showMessage() {
        System.out.println("单例对象调用成功！");
    }
}
